import jdk.nashorn.internal.runtime.arrays.ArrayLikeIterator;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class Main {
    //杨辉三角
    public static ArrayList<ArrayList<Integer>> funs(int Numbers) {
        ArrayList<ArrayList<Integer>> ret = new ArrayList<>();
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        ret.add(list);
        for (int i = 1; i < Numbers; i++) {
            ArrayList<Integer> list1 = new ArrayList<>();
            list1.add(1);
            for (int j = 1; j < i; j++) {
                ArrayList<Integer> list2 = ret.get(i-1);
                list1.add(list2.get(j-1) + list2.get(j));
            }
            list1.add(1);
            ret.add(list1);
        }
        return ret;
    }

    public static void main(String[] args) {
        System.out.println(funs(5));
    }
    public static void main1(String[] args) {
//        MyArrayList<Character> myArrayList = new MyArrayList<>();
//        myArrayList.Add(0,'a');
//        myArrayList.Add(1,'b');
//        myArrayList.Add(2,'c');
//        myArrayList.Add(3,'d');
//        myArrayList.Modify(0,'p');
//        myArrayList.remove('p');
//        myArrayList.DisPlay();
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);
//        arrayList.remove(2);
//        //如果要删除一个1数据直接传1的话会默认删除1下标
//        arrayList.remove(new Integer(1));//要想删除某个数据先创建一个Integer对象
//        System.out.println(arrayList);
        //-------------------------------------------------------------------
//        List<Integer> arrayList2 = arrayList.subList(1,3);//[1,3)
//        arrayList2.set(1,888);
//        System.out.println(arrayList2);//一般可以直接输出引用内容，一定重写了tostring
//        System.out.println(arrayList);
        //----------------------------------------------------------------------
        Iterator<Integer> it = arrayList.iterator();
        while(it.hasNext()){//it.hasNext相当于判断还有没有下一个数据
            System.out.print(it.next() + " ");//这一行意思是将位置移动到下一个并打印
        }
        System.out.println();
        System.out.println("========================");
        //ListIterator是Iterator的子类
        ListIterator<Integer> listIterator = arrayList.listIterator();
        while(listIterator.hasNext()){//it.hasNext相当于判断还有没有下一个数据
            System.out.print(listIterator.next() + " ");//这一行意思是将位置移动到下一个并打印
        }
        System.out.println();
        System.out.println("========================");
        //相当于把位置移动到数组最后
        ListIterator<Integer> listIterator2 = arrayList.listIterator(arrayList.size());
        while (listIterator2.hasPrevious()){//判断还有没有前一个数据
            System.out.print(listIterator2.previous() + " ");//这一行意思是将位置移动到前一个并打印
        }
        System.out.println();
        System.out.println("========================");
    }
}
